package br.com.rglariguet.pioneer.dao;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import br.com.rglariguet.pioneer.enums.TipoUsuarioEnum;
import br.com.rglariguet.pioneer.modelos.Autorizada;

@Transactional
@Repository
public class AutorizadaDAO extends DaoGenerico<Autorizada> {

	public List<Autorizada> listarTodos() {
		return (List<Autorizada>) getSession().createQuery("from Autorizada as autorizada order by autorizada.nomeAutorizada").list();
	}

	public List<Autorizada> listarTodosPorTipo(TipoUsuarioEnum tipo) {
		return (List<Autorizada>) getSession()
				.createQuery("from Autorizada as autorizada where autorizada.usuario.tipoUsuario = :tipo order by autorizada.nomeAutorizada")
				.setParameter("tipo", tipo).list();
	}

	public Autorizada buscaPorId(long id) {
		return (Autorizada) getSession().createQuery("from Autorizada as autorizada where autorizada.id = :id").setParameter("id", id).uniqueResult();
	}

	public ArrayList<Autorizada> buscaPorTipo(TipoUsuarioEnum tipoUsuario) {
		return (ArrayList<Autorizada>) getSession().createQuery("from Autorizada autorizada where autorizada.usuario.tipoUsuario = :tipoUsuario")
				.setParameter("tipoUsuario", tipoUsuario).list();
	}

	public Autorizada buscaPorNome(String nome) {
		return (Autorizada) getSession().createQuery("from Autorizada autorizada where autorizada.nomeAutorizada = :nome").setParameter("nome", nome)
				.uniqueResult();
	}

}
